const app = getApp();
Page({
  data: {
    timer: null,
    time: 0,          // 当前剩余时间（秒）
    isFocusing: false,
    progress: 0,      // 进度（0~1）
    customTotalTime: 1200, // 默认总时间（秒）
    inputMinutes: '', // 用户输入的分钟数
    inspirationText: '', // 当前显示的励志短句
    inspirationList: [ // 励志短句列表
      '专注当下，成就未来！',
      '时间，最公平的艺术家。',
      '每一次专注，都是向成功迈进一步。',
      '耐心是成功的秘诀。',
      '坚持，就是胜利！',
      '把时间用在有价值的事情上。',
      '专注于此刻，世界将为你让路。',
      '时间有限，不要为别人而活。',
      '专注是通往卓越的捷径。',
      '一分耕耘，一分收获。'
    ],
    inspirationTimer: null, // 动态更新短句的定时器
    completionHistory: [] // 倒计时完成历史记录
  },

  onLoad() {
    // 从存储中获取历史记录
    const history = wx.getStorageSync('completionHistory') || [];
    this.setData({
      completionHistory: history
    });
    app.globalData.completionHistory = history;
    this.drawBg();
  },

  // 显示输入时间的弹窗
  showTimeInputModal() {
    const that = this;
    wx.showModal({
      title: '输入倒计时时间',
      editable: true,
      placeholderText: '分钟数',
      success(res) {
        if (res.confirm && res.content.trim() !== '') {
          const minutes = parseInt(res.content.trim(), 10);
          if (!isNaN(minutes) && minutes > 0) {
            that.setData({
              inputMinutes: minutes
            });
            that.startFocus(); // 开始倒计时
          } else {
            wx.showToast({
              title: '请输入有效的分钟数',
              icon: 'none'
            });
          }
        } else if (res.cancel) {
          console.log('用户取消输入');
        }
      }
    });
  },

  // 开始倒计时
  startFocus() {
    if (this.data.isFocusing) return;

    const totalTime = this.data.inputMinutes * 60 || this.data.customTotalTime;
    this.setData({
      isFocusing: true,
      time: totalTime,
      progress: 0
    });
    // push
    const that = this;
    const updateInspiration = () => {
      const randomIndex = Math.floor(Math.random() * that.data.inspirationList.length);
      that.setData({
        inspirationText: that.data.inspirationList[randomIndex]
      });
    };

    // update
    updateInspiration();

    // 设置定时器，每隔10秒更新一次短句内容（与动画时间同步）
    this.data.inspirationTimer = setInterval(updateInspiration, 10000);

    this.data.timer = setInterval(() => {
      let newTime = this.data.time - 1;

      // 倒计时结束处理
      if (newTime <= 0) {
        newTime = 0;
        clearInterval(this.data.timer);
        this.setData({ 
          isFocusing: false,
          time: 0,
          progress: 1
        });
        wx.showToast({ title: '恭喜你！已完成', icon: 'success' });
        wx.vibrateShort(); // 震动提示
        
        // 记录倒计时完成历史
        this.addCompletionToHistory(totalTime / 60);
      }

      // 更新进度（已进行时间 / 总时间）
      const progress = Math.min(
        (totalTime - newTime) / totalTime,
        1
      );

      this.setData({
        time: newTime,
        progress: progress
      });
      this.drawBg();
    }, 1000);
  },

  // 添加倒计时完成历史记录
  addCompletionToHistory(totalMinutes) {
    const now = new Date();
    const completionTime = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()} ${now.getHours()}:${now.getMinutes()}`;
    const newHistory = [
      ...this.data.completionHistory,
      { completionTime, totalTime: totalMinutes }
    ];

    this.setData({
      completionHistory: newHistory
    });

    // 同步全局数据和存储
    app.globalData.completionHistory = newHistory;
    wx.setStorageSync('completionHistory', newHistory);
  },

  // 跳转到历史记录页面
  goToHistory() {
    wx.navigateTo({
      url: '/pages/home/history/history'
    });
  },
  onShow() {
    // 在页面显示时刷新历史记录
    const history = wx.getStorageSync('completionHistory') || [];
    this.setData({
      completionHistory: history
    });
  },
  // 绘制进度环
  drawBg() {
    const ctx = wx.createCanvasContext('progress_bg', this);
    const centerX = 100, centerY = 100, radius = 95;

    // 清空画布
    ctx.clearRect(0, 0, 200, 200);

    // 绘制背景环
    ctx.setLineWidth(5);
    ctx.setStrokeStyle('#95bdd8');
    ctx.beginPath();
    ctx.arc(centerX, centerY, radius, 0, 2 * Math.PI);
    ctx.stroke();

    // 绘制进度环
    ctx.setStrokeStyle('#cccccc');
    ctx.beginPath();
    ctx.arc(
      centerX, centerY, radius,
      -0.5 * Math.PI,
      (-0.5 + 2 * this.data.progress) * Math.PI
    );
    ctx.stroke();

    // 显示剩余时间
    const formatTime = t => `${Math.floor(t/60).toString().padStart(2,'0')}:${(t%60).toString().padStart(2,'0')}`;
    ctx.setFillStyle('#95bdd8');
    ctx.setFontSize(26);
    ctx.setTextAlign('center');
    ctx.fillText(formatTime(this.data.time), centerX, centerY);
    ctx.draw(true);
  },
  // 停止计时
  stopFocus() {
    if (!this.data.isFocusing) return;
    clearInterval(this.data.timer);
    clearInterval(this.data.inspirationTimer); // 停止推送励志短句
    this.setData({ 
      isFocusing: false,
      inspirationText: '' // 清空励志短句
    });
  },
  onUnload() {
    clearInterval(this.data.timer);
    clearInterval(this.data.inspirationTimer); // 清除励志短句定时器
  }
  });